/**
 * Dart语言中提供了await和async机制，
 * 让异步任务的执行看起来和同步代码的执行顺序一致
 * async用来表示定义的方法是异步执行的，
 * 该方法会返回一个Future对象，await后面是一个Future对象，表示待该异步任务完成。
 * 只有异步任务执行完成后才会继续执行后面的代码任务。
 * async的作用就是标记一个方法是异步方法：await的作用是等待异步任务的结果。
 */
import 'dart:io';
void main(List<String> args) async{
  String fileName = 'Unit5/text.txt';
  print('start');
  String info = await readFile(fileName);
  print(info);
  print('end');
}
Future<String> readFile(String fileName){
  File file = File(fileName);
  return file.readAsString();
} //异步读文件

String readFileSync(String fileName){
  File file = File(fileName);
  String info = file.readAsStringSync();
  return info;
}//同步读文件

/**
 * 用async和await实现代码的异步执行机制包含以下四个要点：
 * await只能在标记了async的异步方法中使用，否则报错；
 * 使用async作为方法名后缀声明时，说明这个方法的返回值是一个Future类型；
 * 执行到该方法中用await标注的代码时，会暂停该方法其他部分的代码执行；
 * 当await标注的代码引用的Future类型返回值执行完成，await标注的代码后的下一行代码会立即执行。
 */
